var UserModel = function() {
    var CurSelectModuleID=0;

    var SetCurSelectModuleID=function(id){
        CurSelectModuleID=id;
    };

    var GetCurSelectModuleID=function(){
        return CurSelectModuleID;
    };
    var Set = function(modules) {
        sessionStorage.setItem('user-module', JSON.stringify(modules));
    };

    var Get = function() {
        var obj = sessionStorage.getItem('user-module');
        if (obj && obj !== '') {
            //alert(obj);
            return JSON.parse(obj);
        }
        return [];
    };

    /**根据ID查找Module**/
    var GetModuleByID = function(ModuleID) {
        var Module = {};
        var ModuleItems = Get();
        for (var i in ModuleItems) {
            var item = ModuleItems[i];
            if (item.ModuleID == ModuleID) {
                return item;
            }
        }
        return null;
    };

    /**根据URL查找Module**/
    var GetModuleByUrl = function(Url) {
        var Module = {};
        var ModuleItems = Get();
        for (var i in ModuleItems) {
            var item = ModuleItems[i];
            if(item && item.URL && item.URL!==''){
                let URL = item.URL.toLowerCase().split('?')[0];
                if (URL == Url.toLowerCase()) {
                    return item;
                }
            }
        }
        return null;
    };

    /**根据指向类型（UrlGoModuleID）从最上层向下查找，找到有自定义Url的最低层的Module**/
    var FindTargetModule = function(ModuleID) {
        var Module = GetModuleByID(ModuleID);
        if (!Module) return null;
        var ModuleItems = Get();
        switch (Module.UrlGoModuleID) {
            case -1:
                /**自适应（找到可用的下级，不一定是直接下级）**/
                for (var i in ModuleItems) {
                    if (ModuleItems[i].ParentID == ModuleID && ModuleItems[i].IsShowInMenu > 0) {
                        return FindTargetModule(ModuleItems[i].ModuleID);
                        break;
                    }
                }
                return null;
                break;
            case 0:
                /**自定义**/
                return Module;
                break;
            default:
                /**具体指向到下级的模块**/
                return FindTargetModule(Module.UrlGoModuleID);
                break;
        }
    };

    /**获取所有的父级ID**/
    var GetParentIds = function(moduleId) {
        var Parents = [];
        var Module = GetModuleByID(moduleId);
        if (Module) {
            Parents.push(Module.ParentID + "");
            Parents = Parents.concat(GetParentIds(Module.ParentID));
        }
        return Parents;
    };

    /**从最底层向上查找，根据显示位置（IsShowInMenu=[0,1,2,3]）找到当前位置最低层的Module**/
    var FindLastModuleByIsShowInMenu = function(TargetID, IsShowInMenu) {
        var Module = GetModuleByID(TargetID);
        if (Module && Module.IsShowInMenu != IsShowInMenu) {
            return FindLastModuleByIsShowInMenu(Module.ParentID, IsShowInMenu);
        }
        return Module;
    };

    var TopModule = function() {
        var Get = function() {
            var CurTopModuleID = sessionStorage.getItem("CurTopModuleID");
            console.log(CurTopModuleID);
            if (CurTopModuleID) {
                return CurTopModuleID;
            }
            return 0;
        };

        var Set = function(value) {
            sessionStorage.setItem("CurTopModuleID", value);
        };
        return {
            Get: Get,
            Set: Set
        };
    }();


    var LeftModule = function() {
        var Get = function() {
            var CurLeftModuleID = sessionStorage.getItem("CurLeftModuleID");
            if (CurLeftModuleID) {
                return CurLeftModuleID;
            }
            return 0;
        };

        var Set = function(value) {
            sessionStorage.setItem("CurLeftModuleID", value);
        };
        return {
            Get: Get,
            Set: Set
        };
    }();

    var GuideModule = function() {
        var Get = function() {
            var CurGuideModuleID = sessionStorage.getItem("CurGuideModuleID");
            if (CurGuideModuleID) {
                return CurGuideModuleID;
            }
            return 0;
        };

        var Set = function(value) {
            sessionStorage.setItem("CurGuideModuleID", value);
        };
        return {
            Get: Get,
            Set: Set
        };
    }();


    return {
        Get: Get,
        Set: Set,
        GetModuleByID: GetModuleByID,
        GetModuleByUrl: GetModuleByUrl,
        FindTargetModule: FindTargetModule,
        GetParentIds: GetParentIds,
        FindLastModuleByIsShowInMenu: FindLastModuleByIsShowInMenu,
        TopModule: TopModule,
        LeftModule: LeftModule,
        GuideModule: GuideModule,
        SetCurSelectModuleID:SetCurSelectModuleID,
        GetCurSelectModuleID:GetCurSelectModuleID
    }
}();

export default UserModel;